\section{Problèmes rencontrés}

\subsection{Valgrind et GList}
Nous avons eu des problèmes pour utiliser \textsf{Valgrind} avec des \textsf{GList}. En effet, les \textsf{GList} utilisent une gestion mémoire particulière (voir \href{https://developer.gnome.org/glib/stable/glib-Memory-Slices.html}{\underline{ici}}). \textsf{Valgrind} a du mal à comprendre cette allocation et considère qu'il y a des fuites mémoires (ce qui n'est pas le cas). Pour qu'il n'y ait pas de problèmes, la variable d'environnement \verb+G_SLICE+ doit être définie à \verb+always-malloc+ : \verb+malloc()+ est alors utilisé à la place et \textsf{Valgrind} est satisfait.

\smallskip

Afin d'avoir une issue de secours, nous avons implémenté notre propre module de gestion des listes, utilisant la mémoire de façon à ce que \textsf{Valgrind} puisse analyser correctement cette utilisation sans avoir à changer le mode d'exécution du programme.

\subsection{Autres erreurs liées à l'utilisation de la mémoire}
Sur le test \verb+12-join-main+, un certain nombre d'erreurs sont reportées par \textsf{Valgrind} à la fin de l'exécution du programme (88 erreurs concernant des lectures invalides lors des appels des fonctions appelées après \verb+exit()+). Les causes de ces erreurs n'ont pas encore été déterminées. Le même type d'erreur est rencontré sur le test \verb+61-preemption+.
Sur les tests \verb+example+, \verb+02-switch+ et \verb+11-join+, une seule erreur est rencontrée et concerne une lecture invalide lors de l'utilisation de \verb+swapcontext()+ dans la fonction  \verb+thread_next()+. Là encore, l'origine de l'erreur n'a pas encore été trouvée.